The conventional computer network includes a number of client computers connected together and further connected to a server computer that stores the data and the programs that client computers employ during network operation. This configuration is generally referred to as a client-server network. Typically, each client is a conventional computer system that includes a private main memory, typically a RAM memory, and a persistent storage, typically a hard disk. The server is usually an expensive high end machine that includes a high speed processor unit and a large memory, often having ten to one hundred times more storage than the individual client computers. The clients and server cooperate to share data and services among the different users, and thereby the individual computers appear as a unified distributed system. To this end, the server acts as a central controller that provides through its large memory a central repository of network data, and that distributes services to the individual client computers, generally on an as-available basis. Typically, these services are provided by means of specialized software running on a high speed processor on the server computer.
The client-server computer networking model allows organizations of all sizes to utilize group productivity products such as e-mail. Many business organizations have grown to rely heavily on network services. Employees who travel typically need to access the same network services and resources provided to them at work. Field offices also frequently need to access the headquarters' network services. The term "telecommuter"has been used to describe an employee who stays at home and conducts business by accessing the network services provided at the traditional worksite. These types of users are sometimes referred to as "remote" or "remote clients" because they typically are located in a physically remote place from the networks and because they do not connect to the networks locally or directly. Remote users typically connect to the networks via telephone lines. The terms "remote access" and "remote networking" are frequently used to identify the situation in which a remote user accesses a computer network over analog or digital telephone lines. A remote user generally can utilize any type of computer to access the network including, for example, a personal computer, a workstation, or a portable computer such as a laptop computer, a notebook computer, or a palmtop computer. A remote user typically connects a modem (or other communications adapter such as a digital adapter if the telephones lines are wholly digital) to a serial port of the computer. The modem connected to the user's remote computer communicates over the telephone lines with another modem that is coupled to a device coupled to the network. The other modem and the device are located at the network that the remote client is attempting to access. The device can be coupled directly to the network, or it can be coupled to the network which the remote client is attempting to access via a communications link (e.g., a WAN link) to that network. The device typically is referred to as a "remote access server" or a "remote access device." A typical remote access device provides a point of network access for one or more remote clients.
Although computer networks based on the client-server model generally have been successful at providing users with necessary computer services, as the user demands on computer systems have increased, the weaknesses in the client-server network are beginning to place limits on the services that can be provided.
An additional problem with client-server networks is that they provide a static operating environment that is set for optimal performance at a certain level of network activity. Consequently, client-server networks fail to exploit available resources as network activity changes and cannot improve system performance. In particular, as network activity rises above or drops below the expected level, the static operating environment of a client-server network lacks any ability to reconfigure dynamically the allocation of network resources to a configuration providing better performance for the present level of activity.
Moreover, the client-server computer networking model requires that computer programs written to operate in a client-server environment distribute themselves between clients and the server. This requires that the application programs implement a set of functions that divide the program between the clients and the server. This distribution of the application programs requires that the client-server application programs be quite complex. For example, a client-server computer application program that shares data between different machines must include functionality that allows for the distribution of multiple copies of data files, the maintenance of coherency for the distributed copies, and other such low-level management services.
Further troubling is that the client-server network stores all important applications and data files in the memory of the server system. Consequently, the client-server network is subject to complete system failure each time the server system crashes.
While the present client-server computer architecture is employed widely, it generally fails to provide an adequate response to the increased demands of today's networked computer users. Remote access generally provides additional complications for and performance degradation of the client-server networking model.